[レポート] Amazon Managed Workflows for Apache Airflow(MWAA)によるデータパイプラインの構築 #reinvent #emb007
こんにちは。サービスグループの武田です。
開催中のre:Invent 2020でAmazon Managed Workflows for Apache Airflow(MWAA)のセッションを視聴しましたのでレポートします。
何度か配信がありますので視聴したい方はスケジュールを確認してみてください。
[NEW LAUNCH!] Data pipelines with Amazon Managed Workflows for Apache Airflow
セッション概要
- スピーカー
- John Jackson(AWS Speaker)
- タイトル
- Data pipelines with Amazon Managed Workflows for Apache Airflow
- EMB007
Apache Airflow は、スクリプトとしてデータパイプラインを設定し、優れたユーザーインターフェースでデータパイプラインを監視し、コミュニティが開発したカスタムプラグインのセットを通じて機能を拡張することができるため、採用され続けています。このセッションでは、Amazon Managed Workflows for Apache Airflowを使用して、データエンジニアや科学者がクラウド上で抽出-トランスフォーム-ロード(ETL)ジョブやデータパイプラインを簡単に実行できるようにするプラットフォームであるAirflowを使い始める方法をご覧ください。環境の作成、アクセスの設定、ワークフローの作成と実行方法のデモをご覧ください。また、AirflowのUIやAmazon CloudWatchを利用したモニタリングの方法もご紹介します。
アジェンダ
- データパイプラインの問題
- Apache Airflow
- Amazon Managed Workflows for Apache Airflow(MWAA)
- デモ
- インテグレーションとオープンソース
- いつAmazon MWAAを選択するのか
データパイプラインの問題
そもそもデータパイプラインに興味をもつべき理由は何かといえば、多くの組織ではデータを中心にビジネスを構築しているためです。そしてデータパイプラインと一般的なデータというのは時間の経過とともに複雑になっていきます。
たとえば映画スタジオを例にすると、売り上げの追跡は物理的なDVDの生産数をカウントすることなどによって簡単に実現できました。映画館の上映なども考慮すると多少の手間は増えるでしょうが分析は簡単でした。しかし現在は、物理的な販売だけでなく、オンラインレンタルの売り上げなども追跡する必要があります。さまざまな情報源の追跡が必要ですし、ソーシャルメディアやマーケティングキャンペーンもあります。これらは通常APIなどを提供していますが、仕様が異なるでしょうし、取得情報のフォーマットもまちまちでしょう。
このシンプルなユースケースでさえデータパイプラインは複雑になります。データの管理はワークと呼ばれる一連のタスクを通して行われます。このタイプのワークフローは特定のタスクが完了しなければ次のタスクが実行できない構成となっています。たとえば、異なるスクリーンやレンタル、購入のデータをすべて取得してから統合したいとします。そして後戻りをせずに一定の順序ですべての作業をしたい。このタイプのワークフローや有向非巡回グラフやDAGと呼ばれます。
プレイ回数や視聴情報の取得から始め、EMRやECSあるいはEKSにデータを送信し、CSVからParquetに変換したりタイトルの修正などの処理を行います。データ処理の後はGlueやAthenaなどでデータ分析をするかもしれませんし、Sage Makerなどで追加情報の抽出などをするかもしれません。すべての処理が完了し、データセットが完成したら分析用にRedshiftやDynamoDBに保存などしておきます。途中で障害が起きた場合は、その時点から再開できるようにしておく必要もあります。
Apache Airflow
Apache Airflowは先ほどのようなデータパイプラインを管理できるツールの1つで、AWSサービスやApache Sparkなどとも統合しています。AirflowではDAGとしてワークフローを定義し、管理画面でグラフィカルに確認ができます。
Airflowのユースケースには主に3つのカテゴリがあります。ETL、AI/MLそしてDevOpsです。圧倒的に多いのはETLです。DevOpsと相性がよいというのは、柔軟性の高さと日々のタスクの自動化が可能なためです。Airflowはタスクの実行履歴を保存するメタデータベースを含む、次の4つの主要なコンポーネントから構成されています。
Airflowを自分たちで管理する場合、いくつか課題が出てくるでしょう。簡単なものもあれば難しいものもあります。特に継続的なメンテナンスは大きな負担になるでしょう。
Amazon Managed Workflows for Apache Airflow(MWAA)
AWSはこれらの課題および要望を聞き、Amazon Managed Workflows for Apache Airflow(MWAA)をリリースしました。先ほどの課題を解決するもので、Airflowよりも優れた機能をユーザーに提供します。
- 迅速なデプロイ
- オープンソースのAirflowと同じ(フォークではない)
- Airflowと同じ優れたUI
- マネジメントコンソール、AWS CLI、AWS CloudFormationによるセットアップ
- 設定不要なワーカーのスケーリング
- CeleryExcecutorによる並列性
- AWS Fargateの弾力性
- IAMと統合された認証認可
- VPC、公開エンドポイント、あるいはセキュアなエンドポイントをもつAirflow UI
- IAMロールを利用したワーカーのAWSサービスへのシンプルなアクセス
- ワーカーおよびスケジューラーはユーザーのVPCで実行
- メンテナンスウィンドウによるアップグレード
- 問題発生時のスナップショットおよびロールバック
- Amazon CloudWatchと統合されたモニタリング
- マルチAZ
- 失敗時の自動的な再起動
MWAAを利用するのは簡単で、まずMWAAの環境を作成します。これだけで動作に必要な接続設定などは完了してしまいます。そしてDAGやプラグインをS3バケットにコピーします。最後に、直接あるいはVPN経由などでAirflow UIにアクセスし、コンテナがDAGで更新されていることを確認します。
ユーザーのVPCにはスケジューラーとワーカーが存在します。ワーカーは必要に応じてスケールします。サービスVPCにはメタデータベースとWebサーバーがあり、インターネット上からALBを介してアクセスできます。そしてIAMによって保護されます。
デモ
実際にMWAAの環境を構築するデモです。セッションを視聴してもらうか、こちらのエントリを参照してください。
インテグレーションとオープンソース
AWSサービスと統合されておりコンテナのサポートもたくさんあるため、ECSやKubernetesあるいはDockerオペレーターなどを簡単に使用できます。AWSが強調しておきたいのはオープンソース版のみをサポートするということです。コミュニティに受け入れられてから採用し、AWSが行った改善はフィードバックされることを約束します。
いつAmazon MWAAを選択するのか
MWAAとの自然な比較はAWS Step Functionsでしょう。
MWAAはAirflowを使い慣れた方は最初の選択肢になります。簡単で、引き続き使い慣れたUIが使用でき、そして堅牢です。設定なしでスケーリングし、統合されたモニタリングおよびメンテナンスが提供されます。
最後に
ワーカーのスペックシートなどから裏側はFargateなのかな?など想像していたのですが、セッションでそれが明言されすっきりしました。Airflowは面倒を見るコンポーネントがそれなりにあるため、やはりマネージドサービスとして提供してもらえると助かりますね。ぜひ活用していきましょう!
AWS re:Invent 2020は現在絶賛開催中です!
参加がまだの方は、この機会にぜひこちらのリンクからレジストレーションして豊富なコンテンツを楽しみましょう!
AWS re:Invent | Amazon Web Services
またクラスメソッドではポータルサイトで最新情報を発信中です!